package com.yunxi.service.localService.otd;

import com.yunxi.core.service.IServicePlus;
import com.yunxi.model.otd.OtdWeekCalendar;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 周生产日历 服务类
 * </p>
 *
 * @author XUQI
 * @since 2019-05-17
 */
public interface OtdWeekCalendarService extends IServicePlus<OtdWeekCalendar> {

    /**
     * 根据年月周查询周生产日历对象
     *
     * @param year 年
     * @param week 周
     * @return OtdWeekCalendar
     */
    OtdWeekCalendar findCalendarByWeek(String year, String week);

    /**
     * 校验开始结束时间与已有的周是否冲突
     *
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param calendarId 修改已有的日历时需要传入ID进行排除
     */
    Integer checkConflict(Date startDate, Date endDate, String calendarId);


    /**
     * 根据当前时间查询周日历
     *
     * @param weekNum 周数，0:W0/1:W1/2:W2...
     * @return 日历对象
     */
    OtdWeekCalendar findCalendarByWeekNum(Integer weekNum);

    /**
     * 根据年月查询周日历集合
     *
     * @param year 年
     * @param month 月
     * @return 日历集合
     */
    List<OtdWeekCalendar> findWeekCalendarByMonth(String year, String month);

    /**
     * 根据W0年月周查询W1~W5日历
     * @param year 年
     * @param week 周
     * @return List<OtdWeekCalendar>
     */
    List<OtdWeekCalendar> findFivesCalendarByWeek(String year, String week);


    /**
     * 根据日期查询日历对象
     * @param date 日期
     * @return OtdWeekCalendar
     */
    OtdWeekCalendar findCalendarByDate(Date date);

}
